﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Cotizav.AccesoDatos
{
    public class EquipoDAO
    {
        public int Registrar(Util.ContextoDB ctx, Entidades.Equipo newEquipo)
        {
            SqlCommand cmd = new SqlCommand("USP_EQUIPO_INSERT", ctx.GetConexion(), ctx.GetTx());
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@ID", 0).Direction = System.Data.ParameterDirection.Output;
            cmd.Parameters.AddWithValue("@IDMODELO", newEquipo.IdModelo.HasValue ? newEquipo.IdModelo.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@NOMBREEQUIPO", newEquipo.NombreEquipo ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@CODIGO", newEquipo.CodigoEquipo ?? (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@ESALQUILER", newEquipo.EsAlquiler.HasValue ? newEquipo.EsAlquiler.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@ESVENTA", newEquipo.EsVenta.HasValue ? newEquipo.EsVenta.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@ACTIVO", newEquipo.Activo);
            cmd.Parameters.AddWithValue("@FECHAREGISTRO", newEquipo.FechaRegistro.HasValue ? newEquipo.FechaRegistro.Value : (object)DBNull.Value);
            cmd.Parameters.AddWithValue("@USUARIOREGISTRO", newEquipo.UsuarioRegistro ??(object)DBNull.Value);

            int result = cmd.ExecuteNonQuery();

            int id = Int32.Parse(cmd.Parameters["@ID"].Value.ToString());
            newEquipo.IdEquipo = id;

            return result;
        }

        public List<Entidades.Equipo> Listar(Util.ContextoDB ctx)
        {
            SqlCommand cmd = new SqlCommand("select * from EQUIPO", ctx.GetConexion(), ctx.GetTx());
            DataTable dtEquipo = new DataTable();
            dtEquipo.Load(cmd.ExecuteReader());

            List<Entidades.Equipo> lista = new List<Entidades.Equipo>();

            foreach (DataRow fila in dtEquipo.Rows)
            {
                Entidades.Equipo e = new Entidades.Equipo();

                e.IdEquipo = Int32.Parse(fila["ID"].ToString());
                e.IdModelo = !(fila["IDMODELO"] is DBNull) ? Int32.Parse(fila["IDMODELO"].ToString()) : new Nullable<int>();
                e.IdSucursal = !(fila["IDSUCURSAL"] is DBNull) ? Int32.Parse(fila["IDSUCURSAL"].ToString()) : new Nullable<int>();
                e.NombreEquipo = fila["NOMBREEQUIPO"].ToString();
                e.CodigoEquipo = fila["CODIGO"].ToString();
                e.Serie = fila["SERIE"].ToString();
                e.EsAlquiler = !(fila["ESALQUILER"] is DBNull) ? Int32.Parse(fila["ESALQUILER"].ToString()) : new Nullable<int>();
                e.EsVenta = !(fila["ESVENTA"] is DBNull) ? Int32.Parse(fila["ESVENTA"].ToString()) : new Nullable<int>();
                e.Activo = Int32.Parse(fila["ACTIVO"].ToString());
                e.Marca = fila["MARCA"].ToString();
                e.FechaRegistro = !(fila["FECHAREGISTRO"] is DBNull) ? Convert.ToDateTime(fila["FECHAREGISTRO"].ToString()) : new Nullable<DateTime>();
                e.FechaModificacion = !(fila["FECHAMODIFICACION"] is DBNull) ? Convert.ToDateTime(fila["FECHAMODIFICACION"].ToString()) : new Nullable<DateTime>();
                e.UsuarioRegistro = fila["USUARIOREGISTRO"].ToString();
                e.UsuarioModificacion = fila["USUARIOMODIFICACION"].ToString();

                lista.Add(e);
            }

            return lista;
        }
    }
}
